﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Biblioteca.dao.iClassesDAO.equipamento;
using Biblioteca.classesBasicas.equipamento;
using Biblioteca.util;
using System.Data.SqlClient;

namespace Biblioteca.dao.classesDAO.equipamento
{
    class CapaceteDAO : Conexao, ICapaceteDAO
    {
        public void cadastrar(Capacete objeto)
        {
            try
            {
                this.abrirConexao();
                SqlCommand comandoSql = conexao.CreateCommand();
                comandoSql.CommandText = "INSERT INTO CAPACETE(NOME, TIPO, MARCA, VALOR) VALUES ('" + objeto.Nome + "','" + objeto.Tipo + "','" + objeto.Marca + "','" + objeto.Valor + "')";
                comandoSql.ExecuteNonQuery();
                comandoSql.Dispose();
                this.fecharConexao();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message + " Erro ao cadastar Capacete.");
            }
            finally
            {
                this.fecharConexao();
            }
        }


        public void alterar(Capacete objeto)
        {
            try
            {
                this.abrirConexao();
                SqlCommand comando = new SqlCommand("UPDATE CAPACETE SET NOME='" + objeto.Nome + "', TIPO='" + objeto.Tipo + "', MARCA='" + objeto.Marca + "', VALOR='" + objeto.Valor + "'" + " WHERE CAPACETE.ID_CAPACETE = " + Convert.ToInt32(objeto.Id), this.conexao);
                comando.ExecuteNonQuery();
                comando.Dispose();
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message + " Erro ao alterar Capacete.");
            }

            finally
            {
                this.fecharConexao();
            }
        }

        //CRIAR PROCEDURE
        public void remover(Capacete objeto)
        {
            try
            {
                this.abrirConexao();
                SqlCommand comando = new SqlCommand("EXEC PROCEDURE_DELETAR_CAPACETE " + Convert.ToInt32(objeto.Id), this.conexao);
                comando.ExecuteNonQuery();
                comando.Dispose();
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message + " Erro ao remover Capacete.");
            }

            finally
            {
                this.fecharConexao();
            }
        }

        public Capacete consultarPorId(string id)
        {
            Capacete capaceteMetodo = null;

            try
            {
                this.abrirConexao();
                SqlCommand comando = new SqlCommand("SELECT ID_CAPACETE, NOME, TIPO, MARCA, VALOR FROM CAPACETE WHERE CAPACETE.ID_CAPACETE=" + Convert.ToInt32(id), this.conexao);
                SqlDataReader DbReader = comando.ExecuteReader();
                if (DbReader.Read())
                {
                    capaceteMetodo = new Capacete();
                    capaceteMetodo.Id = Convert.ToString(DbReader.GetInt32(DbReader.GetOrdinal("ID_CAPACETE")));
                    capaceteMetodo.Nome = DbReader.GetString(DbReader.GetOrdinal("NOME"));
                    capaceteMetodo.Tipo = DbReader.GetString(DbReader.GetOrdinal("TIPO"));
                    capaceteMetodo.Marca = DbReader.GetString(DbReader.GetOrdinal("MARCA"));
                    capaceteMetodo.Valor = DbReader.GetString(DbReader.GetOrdinal("VALOR"));
                    //capaceteMetodo.Imagem = DbReader.GetString(DbReader.GetOrdinal("IMAGEM"));
                }

                DbReader.Close();
                comando.Dispose();
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message + " Erro ao consultar o Capacete.");
            }

            finally
            {
                this.fecharConexao();
            }
            return capaceteMetodo;
        }

        public List<Capacete> listar()
        {
            List<Capacete> listaCapacete = new List<Capacete>();

            try
            {
                this.abrirConexao();
                SqlCommand comando = new SqlCommand("SELECT ID_CAPACETE, NOME, TIPO, MARCA, VALOR FROM CAPACETE", this.conexao);
                SqlDataReader DbReader = comando.ExecuteReader();
                while (DbReader.Read())
                {
                    Capacete capaceteMetodo = new Capacete();
                    capaceteMetodo.Id = Convert.ToString(DbReader.GetInt32(DbReader.GetOrdinal("ID_CAPACETE")));
                    capaceteMetodo.Nome = DbReader.GetString(DbReader.GetOrdinal("NOME"));
                    capaceteMetodo.Tipo = DbReader.GetString(DbReader.GetOrdinal("TIPO"));
                    capaceteMetodo.Marca = DbReader.GetString(DbReader.GetOrdinal("MARCA"));
                    capaceteMetodo.Valor = DbReader.GetString(DbReader.GetOrdinal("VALOR"));
                    //capaceteMetodo.Imagem = DbReader.GetString(DbReader.GetOrdinal("IMAGEM"));

                    listaCapacete.Add(capaceteMetodo);
                }

                DbReader.Close();
                comando.Dispose();
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message + " Erro ao listar o Capacete.");
            }

            finally
            {
                this.fecharConexao();
            }
            return listaCapacete;
        }
    }
}
